package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户好友关系对象 friendships
 * 
 * @author hello
 * @date 2025-10-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Friendships extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 好友关系ID（主键） */
    private Long friendshipId;

    /** 用户1的ID（关联users表） */
    @Excel(name = "用户1的ID", readConverterExp = "关=联users表")
    private Long user1Id;

    /** 用户2的ID（关联users表） */
    @Excel(name = "用户2的ID", readConverterExp = "关=联users表")
    private Long user2Id;

    /** 好友关系状态（0-已删除，1-正常，2-已拉黑） */
    @Excel(name = "好友关系状态", readConverterExp = "0=-已删除，1-正常，2-已拉黑")
    private Integer status;

    /** 好友分组ID */
    @Excel(name = "好友分组ID")
    private Long groupId;

    /** 亲密度分数 */
    @Excel(name = "亲密度分数")
    private Long intimacyScore;

    /** 最后互动时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后互动时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastInteraction;

    /** 成为好友时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成为好友时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setFriendshipId(Long friendshipId) 
    {
        this.friendshipId = friendshipId;
    }

    public Long getFriendshipId() 
    {
        return friendshipId;
    }
    public void setUser1Id(Long user1Id) 
    {
        this.user1Id = user1Id;
    }

    public Long getUser1Id() 
    {
        return user1Id;
    }
    public void setUser2Id(Long user2Id) 
    {
        this.user2Id = user2Id;
    }

    public Long getUser2Id() 
    {
        return user2Id;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setGroupId(Long groupId) 
    {
        this.groupId = groupId;
    }

    public Long getGroupId() 
    {
        return groupId;
    }
    public void setIntimacyScore(Long intimacyScore) 
    {
        this.intimacyScore = intimacyScore;
    }

    public Long getIntimacyScore() 
    {
        return intimacyScore;
    }
    public void setLastInteraction(Date lastInteraction) 
    {
        this.lastInteraction = lastInteraction;
    }

    public Date getLastInteraction() 
    {
        return lastInteraction;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("friendshipId", getFriendshipId())
            .append("user1Id", getUser1Id())
            .append("user2Id", getUser2Id())
            .append("status", getStatus())
            .append("remark", getRemark())
            .append("groupId", getGroupId())
            .append("intimacyScore", getIntimacyScore())
            .append("lastInteraction", getLastInteraction())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
